const redisDb = {};
import { createClient } from "redis";
const client = createClient('6379', '127.0.0.1');

client.on('error',function (err) {
  console.log('redis error：'+err);
});

client.on('connect',function () {
  console.log('redis连接成功...')
});

/**
 *
 * @param dbNum 库号
 * @param key 键
 * @param value 值
 * @param expire 过期时间（单位：秒，可为空，为空则不过期）
 * @param callback 回调
 */
redisDb.set = function (dbNum,key,value,expire) {
  return new Promise((success,error)=>{
    client.select(dbNum,function (err) {
      if (err || !key)  error(err)
      else {
        client.set(key,JSON.stringify(value),function (err,result) {
          if (err) error(err)
          if (!isNaN(expire) && expire>0)
            client.expire(key, parseInt(expire))
          success(result)
        })
      }
    })
  })
};

redisDb.get = (dbNum,key) => {
  return new Promise((success,error)=>{
    client.select(dbNum,function (err) { 
      if (err || !key) error(err)
      else {
        client.get(key,function (err,result) {
          if (err){
            error(err)
          }
          success(JSON.parse(result))
        })
      }
    })
  })
}

redisDb.isHave = (dbNum,key) => {
  return new Promise((success,error)=>{
    client.select(dbNum,function (err) {
      if (err || !key) error(err)
      else {
        client.exists(key,function(err,result){
          if (err){
            error(err)
          }
          success(JSON.parse(result))
        })
      }
    })
  })
}

redisDb.del = (dbNum,key) => {
  return new Promise((success,error)=>{
    client.select(dbNum,function (err) {
      if (err || !key) error(err)
      else {
        client.del(key,function (err,result) {
          if (err){
            error(err)
          }
          success(JSON.parse(result))
        })
      }
    })
  })
}

export default redisDb;
